|
A data type which contains itself. The commonest example is the list type, in Haskell: data List a = Nil | Cons a (List a) which says a list of a's is either an empty list or a {cons cell} containing an 'a' (the "head" of the list) and another list (the "tail"). Recursion is not allowed in Miranda or Haskell {synonym types}, so the following Haskell types are illegal: type Bad = (Int, Bad) type Evil = Bool -> Evil whereas the seeminly equivalent algebraic data types are acceptable: data Good = Pair Int Good data Fine = Fun (Bool->Fine) スポンサード リンク
|